<?php
/**
 * User: Ngannv
 * Email: ngankt2@gmail.com
 * Y!M : ngankt2
 * Date: 8/21/11
 * Time: 9:16 PM
 */


class jController extends CI_Controller
{
    public $jSmarty = '';
    static $mod = ''; //Moduele name OR Controller name
    static $act = ''; //action name
    static $params = array();

    function __construct()
    {
        parent::__construct();
        $this->setSession();
        $this->load->library('jsmarty');
        $this->load->library('jstring');
        $this->load->library('jglobal');
        $this->load->helper('url');
        $this->load->model('jmodel');
        $this->jSmarty = new jSmarty();
    }

    /**
     * @Ngannv :: update 22.08.11
     * Load method from this class
     * */
    protected function getAct($method_name, $params = null, $error_func = null)
    {
        if (!method_exists($this, $method_name)) {
            if (isset($error_func) && function_exists($error_func)) {
                return $error_func();
            }
            else {
                if (J_DEBUG) {
                    jGlobal::debug($this);
                    $this->goErrorMsg('Không tìm thấy Method: ' . $method_name . ' trong class: ' . get_class($this));
                }
                $this->goErrorMsg();
            }
        }
        return $this->$method_name($params);

    }

    /**
     * Ngannv add 22.08.2011
     * Load Controller in ADMIN_DIR  or JPublic_DIR
     * @param :$dir=Tên thư mục ngang hàng với file jController
     * @notice : Không copy hoặc di chuyển function này đến thư mục khác
     * */

    public function getController($controller, $param = null, $dir_name = '/', $ext = '.php')
    {
        if (trim($dir_name) != '/') {
            $dir_name = '/' . $dir_name . '/';
        }
        $controller_file = dirname(__FILE__) . $dir_name . $controller . '/' . $controller . $ext;
        if (!file_exists($controller_file)) {
            if (J_DEBUG) {
                jGlobal::debug($this);
                jGlobal::debug($controller);//Thêm cái này nữa cho nó lành ^^
                $this->goErrorMsg('#Không tìm thấy file : ' . $controller_file);
            }
            $this->goErrorMsg();
        }
        require_once $controller_file;
        return new  $controller($param);

    }

    /**
     * Ngannv add 25.08.2011
     * Load Controller in ADMIN_DIR
     * @require CONTROL_PATH & ADMIN_DIR
     * */
    public function getAdminController($controller, $params = null, $ext = '.php')
    {
        $controller_file = CONTROL_PATH . ADMIN_DIR . $controller . '/' . $controller . $ext;
        if (!file_exists($controller_file)) {
            if (J_DEBUG) {
                jGlobal::debug($this);
                jGlobal::debug($controller);
                $this->goErrorMsg('#Không tìm thấy file : ' . $controller_file);
            }
            $this->goErrorMsg();
        }
        require_once $controller_file;
        return new $controller($params);
    }

    /**
     * Tham số get hoặc POST
     * */

    public function getParam($index, $security = FALSE)
    {
        return $this->input->get_post($index, $security);
    }

    /**
     * Khởi tạo session
     * */
    public function setSession()
    {
        if (!isset($_SESSION)) {
            @session_start();
        }
    }

    /**
     * Hiển thị thông báo lỗi giống màn hình 404
     */
    public function goErrorMsg($content = 'Xin lỗi nhé!', $title = APP_NAME, $heading = APP_NAME)
    {
        $vars['title'] = $title;
        $vars['heading'] = $heading;
        $vars['content'] = $content;
        $this->jSmarty->viewTemplate('jError.tpl', $vars);
        exit;
    }

}
